// 拆出来用户相关的路由模块

const express = require("express");

// 引入 UserModel
const UserModel = require("../models/user.js");

const router = express.Router();

/**
 * 注册用户接口
 *  请求地址：http://localhost:3000/registry
 *  请求方式：POST
 *  请求参数：
 *    - username
 *    - password
 *    - nickname
 *    - avatar
 *  响应出参：
 *    {
 *      code: 0,
 *      msg: 'ok'
 *    }
 */
router.post("/registry", async (req, res) => {
  // 取参数 req.body 前置条件 {}
  // const { username, password, nickname, avatar } = req.body;
  // UserModel.create({
  //   username,
  //   password,
  //   nickname,
  //   avatar,
  // });

  try {
    // 小作业：用户名不能重复。。。
    await UserModel.create(req.body);
    res.send({
      code: 0,
      msg: "ok",
    });
  } catch (error) {
    res.send({
      code: -1,
      msg: error.message || error,
    });
  }
});

/**
 * 登录接口
 *  请求地址：http://localhost:3000/login
 *  请求方式：POST
 *  请求参数：
 *    - username
 *    - password
 *  响应出参：
 *    {
 *      code: 0,
 *      msg: 'ok',
 *      data: {
 *        username: 'admin',
 *        nickname: ''
 *      }
 *    }
 */
router.post("/login", async (req, res) => {
  // UserModel.find({
  //   // key : value
  //   //    key - 数据库中集合中字段的名字
  //   username: req.body.username,
  //   password: req.body.password
  // })

  try {
    // 一、find方法
    // 小作业：find 的第二个参数的使用手法
    // const data = await UserModel.find(req.body, "username nickname avatar");
    // console.log("data", data); // [] 如果查询不到，返回的是空数组
    // if (data.length) {
    //   // 有这个人
    //   res.send({
    //     code: 0,
    //     msg: "ok",
    //     data: data[0],
    //   });
    // } else {
    //   // 没有这个人
    //   // res.send({
    //   //   code: -1,
    //   //   msg: "用户名或密码错误",
    //   // });
    //   throw new Error("登录失败");
    // }

    // 二、findOne
    const data = await UserModel.findOne(req.body, "username nickname avatar");
    console.log("data: ", data); // {} || null
    if (data) {
      // 有这个人
      res.send({
        code: 0,
        msg: "ok",
        data,
      });
    } else {
      // 没有这个人
      throw new Error("没有这个人");
    }
  } catch (error) {
    console.log("登录失败", error);
    res.send({
      code: -1,
      msg: "用户名或密码错误",
    });
  }
});

module.exports = router;
